【MediaPipe】Hair Segmentation動かしてみた
カフェチームの山本です。
今までは、Multi Hand Trackingを動かし、手の検出を行っていました。
今回は少し手を伸ばして、同じくMediaPipeで公開されている、Hair Segmentationを動かしてみたいと思います。
Hair Segmentationを動かす
今回はWebブラウザで動かしました。こちらのページの「Example Apps」「Web」の項目にリンクがありますので、アクセスします。別ページの「MediaPipe on the Web」の項目に飛ばされるので、「MediaPipe Hair Segmentation」を選択します。ページ右上の実行のアイコン(非常口のピクトグラムのようなマーク)をクリックすると、ブラウザで実行します。(これも簡単ですね)
利用したMediaPipeのバージョンはv0.7.5でした。
WSLやUbuntuから動かしたい場合は、CPU版がないため、GPU版を動かす必要があります。GPUで動作させるための設定をして、以下のコマンドを打てば、実行できると思われます。入出力ファイルへのパスは適宜変更してください。GPUで動作させるための設定としては、MediaPipeのインストールガイドのページとGPU関連のページをご参照ください。
export GLOG_logtostderr=1 bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \ mediapipe/examples/desktop/desktop/hair_segmentation:hair_segmentation_gpu
GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/desktop/hair_segmentation/hair_segmentation_gpu \ --calculator_graph_config_file=mediapipe/graphs/hair_segmentation/hair_segmentation_mobile_gpu.pbtxt \ --input_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/sample.mp4" \ --output_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/output.mp4"
結果
使用したPCの機種はSurface Laptop 3、利用したブラウザはGoogle Chrome、画面はWindows10のキャプチャ機能で録画しました。
結果1:正面からの映像
そのまま実行すると、下の動画のようになりました。髪の毛の部分が青色に変わっていることがわかります。頭を動しても追従してきます。
髪にオーバレイしている色は、実行画面のエディタで162行目で指定されているので、ここを修正すれば変更できます。
color { r: 0 g: 0 b: 255 }
例えば、下のように変更すると、髪の色を赤色にすることができます。
color { r: 255 g: 0 b: 255 }
結果2:上からの映像
上から撮影した映像を想定し、頭の上の部分から撮影して検出を行いました。これも検出できています。
結果3:複数人の映像
複数人が映っている場合を想定して、画像を複数並べて検出させてみました。一部の髪は検出できていますが、全員の髪は検出できませんでした。途中から検出する領域が増えているため、もう少し長く検出されると、全て検出されるかもしれません。タブレットで写しているため、それが影響している可能性もあると思います。
まとめ
今回はMediaPipeのHair Segamentationを動かしてみました。1人であれば正しく検出できましたが、複数人が映っていると検出されない場合がありました。